//
//  FilterModule.h
//  FilterModule_Standalone
//
//  Created by kadlubek47 on 01.08.2013.
//  Copyright (c) 2013 kadlubek47. All rights reserved.
//

#ifndef __LowPassFilter_Standalone__FilterModule__
#define __LowPassFilter_Standalone__FilterModule__

#include "IProcess.h"
#include "IParameterizable.h"

#include "FMTypes.h"  //<Samples data type

#include "IRFCsManager.h"
#include "ConvolutionersManager.h"


class FilterModule: public IParameterizable<FMParameters>, public IProcess<float_type> {
public:
     FilterModule();
    ~FilterModule();
    
    void setParameters  (const FMParameters& params);
    
    void process        (ChannelsInOut<float_type>& audioBlocks);
    void reset();
    
    unsigned int get_IR_N();
    unsigned int get_IR_C();
    
private:
    IRFCsManager          irfcManager_;
    ConvolutionersManager convolutionersManager_;
    
    bool irfChanged_ = false;
};


#endif /* defined(ProcessBase) */
